package epucjr.psicopuc.teste;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import org.hibernate.search.jpa.FullTextEntityManager;
import org.hibernate.search.jpa.Search;

import epucjr.psicopuc.dominio.Candidato;
import epucjr.psicopuc.tecnologia.EmFactory;
import epucjr.psicopuc.tecnologia.GeradorQueryLucene;

public class TesteHibernateSearchUtil {
	
	EntityManager em;
	
	
	public TesteHibernateSearchUtil() {
		em = EmFactory.getEntityManager();
	}
	
	@SuppressWarnings("unchecked")
	public List<Candidato> testeHibernateSearch(){
		GeradorQueryLucene testeluceneQ = new GeradorQueryLucene();
		testeluceneQ.buscarAlgoSTest();
		FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
		System.out.println("\nO que veio: " + testeluceneQ.getLuceneQuery());
		Query query = fullTextEntityManager.createFullTextQuery(testeluceneQ.getLuceneQuery());
		//query.setFirstResult(0).setMaxResults(20);
		List<Candidato> listaDeCandidatos = query.getResultList();
		
		if(listaDeCandidatos == null){
			System.out.println("Lista nula");
		}
		else if(listaDeCandidatos.isEmpty()){
			System.out.println("Lista esta vazia");
			System.out.println(query.toString());
		}
/*		int x = listaDeCandidatos.size()-1;
		
		for(int i = 0; i<x ;i++){
			System.out.println( listaDeCandidatos.size() +"/"+listaDeCandidatos.get(i).getNome());
		}*/
		
		return listaDeCandidatos;
	}
	
	@SuppressWarnings("unchecked")
	public List<Candidato> testeHibernateSearch(String nome, String deficiencia, String escolaridade, String informatica, String idioma, String trabalhou, String areaDeInteresse
			, String cpf, String rg, String idade, String sexo,String cidade, String estado, String bairro){
		
		GeradorQueryLucene testeluceneQ = new GeradorQueryLucene();
		testeluceneQ.buscarAlgo( nome, deficiencia, escolaridade, informatica, idioma, trabalhou, areaDeInteresse, cpf, rg, idade, sexo, cidade, estado, bairro);
		
		FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
		Query query = fullTextEntityManager.createFullTextQuery(testeluceneQ.getLuceneQuery(), Candidato.class);
		//query.setFirstResult(0).setMaxResults(20);
		List<Candidato> listaDeCandidatos = query.getResultList();
		
		if(listaDeCandidatos == null){
			System.out.println("\n" + "Lista nula");
		}
		else if(listaDeCandidatos.isEmpty()){
			System.out.println("\n" + "Lista esta vazia");
			System.out.println("THS:67" + query.toString());
		}
		
		/*for(Candidato candidato: listaDeCandidatos){
			System.out.println(candidato.getNome());
		}*/
		
		return listaDeCandidatos;
		
		
	}

}
